/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package upc.jfactory.scp.bl.controller;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import upc.jfactory.scp.entidad.Empresa;
import upc.jfactory.scp.entidad.PuestoOfertado;
import upc.jfactory.scp.jpa.bean.OfertaEmpresa;
import upc.jfactory.scp.jpa.bean.OfertaLaboral;
import upc.jfactory.scp.jpa.bean.OfertaProyecto;
import upc.jfactory.scp.jpa.controlador.OfertaEmpresaJpaController;
import upc.jfactory.scp.jpa.controlador.OfertaLaboralJpaController;
import upc.jfactory.scp.jpa.controlador.OfertaProyectoJpaController;
import upc.jfactory.scp.jpa.controlador.exceptions.NonexistentEntityException;






/**
 *
 * @author Diego
 */
public class OfertaEmpresaController {

    
    public List<OfertaEmpresa> ListarOfertas(){
      
               OfertaEmpresaJpaController ofertaempresaJpaController= new OfertaEmpresaJpaController();
               return ofertaempresaJpaController.findOfertaEmpresaEntities();

	
    }
    public List<OfertaLaboral> ListarOfertasLaborales(){

               OfertaLaboralJpaController ofertalaboralJpaController= new OfertaLaboralJpaController();
               return ofertalaboralJpaController.findOfertaLaboralEntities();


    }
    public List<OfertaLaboral> ListarOfertasLaboralesEmpresa(int idempresa){

               OfertaLaboralJpaController ofertalaboralJpaController= new OfertaLaboralJpaController();
               return ofertalaboralJpaController.DameOfertaLaboraxEmpresa(idempresa);


    }
    public List<OfertaProyecto> ListarOfertasProyecto(){

               OfertaProyectoJpaController ofertaproyectoJpaController= new OfertaProyectoJpaController();
               return ofertaproyectoJpaController.findOfertaProyectoEntities();


    }
public List<OfertaProyecto> ListarOfertasProyectoEmpresa(int idempresa){

               OfertaProyectoJpaController ofertaproyectoJpaController= new OfertaProyectoJpaController();
               return ofertaproyectoJpaController.DameOfertaProyectoxEmpresa(idempresa);


    }
 public String ModificarOferta(int id){
OfertaLaboralJpaController ofertalaboralJpaController= new OfertaLaboralJpaController();
 OfertaProyectoJpaController ofertaproyectoJpaController= new OfertaProyectoJpaController();
FacesContext ctx = FacesContext.getCurrentInstance();
        HttpSession session =  (HttpSession) ctx.getExternalContext().getSession(true);
        
    OfertaLaboral oferta1= ofertalaboralJpaController.findOfertaLaboral(id);
    if (oferta1==null){
            OfertaProyecto oferta2= ofertaproyectoJpaController.findOfertaProyecto(id);
            session.setAttribute("oferta", oferta2);
            return "modificarproyecto";

    }else
    {
            session.setAttribute("oferta", oferta1);
            return "modificarrol";
    }
    }
    public void Eliminar(int id){
OfertaLaboralJpaController ofertalaboralJpaController= new OfertaLaboralJpaController();
OfertaEmpresaJpaController ofertaempjpacontroller= new OfertaEmpresaJpaController();

    OfertaProyectoJpaController ofertaproyectoJpaController= new OfertaProyectoJpaController();
    OfertaLaboral oferta1= ofertalaboralJpaController.findOfertaLaboral(id);
    if (oferta1==null){
            try {
                ofertaproyectoJpaController.destroy(id);
                ofertaempjpacontroller.destroy(id);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(OfertaEmpresaController.class.getName()).log(Level.SEVERE, null, ex);
            }

    }else
    {
            try {
                ofertalaboralJpaController.destroy(id);
                ofertaempjpacontroller.destroy(id);
                CompetenciasxOfertaController compcont= new CompetenciasxOfertaController();
                compcont.BorrarCompetenciasxOfertaLaboral(id);
                CapacidadesxOfertaController capcont= new CapacidadesxOfertaController();
                capcont.BorrarXCapacidadesXOfertaLaboral(id);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(OfertaEmpresaController.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    }
    
    public String DameNombreOfertaXID(int id){
    OfertaLaboralJpaController ofertalaboralJpaController= new OfertaLaboralJpaController();
    OfertaProyectoJpaController ofertaproyectoJpaController= new OfertaProyectoJpaController();
    OfertaLaboral oferta1= ofertalaboralJpaController.findOfertaLaboral(id);
    if (oferta1==null){
         OfertaProyecto oferta2 = ofertaproyectoJpaController.findOfertaProyecto(id);

          ProyectoController proyectocontroller= new ProyectoController();

          return proyectocontroller.Proyectoxid(oferta2.getProyectoId());

    }else
    {
     RolController rolController = new RolController();
     return rolController.NombreRol(oferta1.getRolId());
    }

    }
    public List<PuestoOfertado> PuestosOfertados(){
        List<OfertaLaboral> ofertas= ListarOfertasLaborales();
        List<OfertaProyecto> ofertasp= ListarOfertasProyecto();
        List<PuestoOfertado> ofertados= new ArrayList<PuestoOfertado>();
        EmpresaController empreson= new EmpresaController();
        RolController role= new RolController();
        ProyectoController proy= new ProyectoController();
        

        for (OfertaLaboral oferta : ofertas ){
               PuestoOfertado ofertado = new PuestoOfertado();
               ofertado.setIdEmpresa(oferta.getEmpresaId());
               ofertado.setNombreEmpresa(empreson.GetEmpresa(oferta.getEmpresaId()));
               ofertado.setIdPuestoOfertado(oferta.getOfertalaboralId());
               ofertado.setIdCargo(oferta.getRolId());
               ofertado.setNombreCargo(role.NombreRol(oferta.getRolId()));
               ofertado.setFechaFin(oferta.getFechaFin());
ofertados.add(ofertado);
        }
         for (OfertaProyecto oferta : ofertasp ){
               PuestoOfertado ofertado = new PuestoOfertado();
               ofertado.setIdEmpresa(oferta.getEmpresaId());
               ofertado.setNombreEmpresa(empreson.GetEmpresa(oferta.getEmpresaId()));
               ofertado.setIdPuestoOfertado(oferta.getOfertaproyectoId());
               ofertado.setIdCargo(oferta.getProyectoId());
               ofertado.setNombreCargo(proy.Proyectoxid(oferta.getProyectoId()));
               ofertado.setFechaFin(oferta.getFechaFin());
        ofertados.add(ofertado);
        }

    return ofertados;
    }
public List<PuestoOfertado> PuestosOfertadosxEmpresa(){
        FacesContext ctx = FacesContext.getCurrentInstance();
        HttpSession session =  (HttpSession) ctx.getExternalContext().getSession(true);
        Empresa empresa= (Empresa)session.getAttribute("usuario");
        List<OfertaLaboral> ofertas= ListarOfertasLaboralesEmpresa(empresa.getEmpresaId());
        List<OfertaProyecto> ofertasp= ListarOfertasProyectoEmpresa(empresa.getEmpresaId());
        List<PuestoOfertado> ofertados= new ArrayList<PuestoOfertado>();
        EmpresaController empreson= new EmpresaController();
        RolController role= new RolController();
        ProyectoController proy= new ProyectoController();


        for (OfertaLaboral oferta : ofertas ){
               PuestoOfertado ofertado = new PuestoOfertado();
               ofertado.setIdEmpresa(oferta.getEmpresaId());
               ofertado.setNombreEmpresa(empreson.GetEmpresa(oferta.getEmpresaId()));
               ofertado.setIdPuestoOfertado(oferta.getOfertalaboralId());
               ofertado.setIdCargo(oferta.getRolId());
               ofertado.setNombreCargo(role.NombreRol(oferta.getRolId()));
               ofertado.setFechaFin(oferta.getFechaFin());
               ofertados.add(ofertado);
        }
         for (OfertaProyecto oferta : ofertasp ){
               PuestoOfertado ofertado = new PuestoOfertado();
               ofertado.setIdEmpresa(oferta.getEmpresaId());
               ofertado.setNombreEmpresa(empreson.GetEmpresa(oferta.getEmpresaId()));
               ofertado.setIdPuestoOfertado(oferta.getOfertaproyectoId());
               ofertado.setIdCargo(oferta.getProyectoId());
               ofertado.setNombreCargo(proy.Proyectoxid(oferta.getProyectoId()));
               ofertado.setFechaFin(oferta.getFechaFin());
               ofertados.add(ofertado);
        }

    return ofertados;
    }
}
